#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# Project: spd-sxmcc
"""
@file: obs_gk_video_recording.py
@author: lyndon
@time: Created on 2022-02-19 20:07
@env: Python
@desc:
@ref:
@blog:
"""

import os
import html2text
from lxml import etree


if __name__ == '__main__':
    # out_path = r"D:\iProject\myPython\com\teradata\seleniumtest\biancheng\out"
    # out_file = os.path.join(out_path, f"test.md")
    # sss = {'base64Encoded': False,
    #        'body': '<!DOCTYPE html>\n<html lang="zh-CN">\n<head>\n<meta charset="utf-8" />\n<meta http-equiv="X-UA-Compatible" content="IE=edge" />\n<meta name="viewport" content="width=device-width, initial-scale=1" />\n<meta name="renderer" content="webkit" />\n<meta name="force-rendering" content="webkit"/>\n<meta name="applicable-device" content="pc,mobile" />\n<meta name="MobileOptimized" content="width" />\n<meta name="HandheldFriendly" content="true" />\n<meta http-equiv="Cache-Control" content="no-transform" />\n<meta http-equiv="Cache-Control" content="no-siteapp" />\n<meta name="format-detection" content="telephone=no" />\n<link rel="shortcut icon" href="/favicon.ico?v=1.6.91" />\n<link href="/templets/new/style/common.css?v=1.6.91" rel="stylesheet" />\n<title>GCC是什么？</title>\n<meta name="description" content="对于 GCC 的认知，很多读者还仅停留在GCC 是一个编译器，可以帮我们运行 C 语言程序的层面。从本节开始，我将带领大家系统学习 GCC，本节先带领大家系统地了解一下 GCC。" />\n</head>\n<body>\n<div id="topbar" class="clearfix">\n<ul id="product-type" class="left">\n<li>\n<a href="/"><span class="iconfont iconfont-home"></span>首页</a>\n</li>\n<li class="active">\n<a href="/sitemap/" rel="nofollow"><span class="iconfont iconfont-book"></span>教程</a>\n</li>\n<li>\n<a href="http://vip.biancheng.net/p/vip/show.php" rel="nofollow" target="_blank"><span class="iconfont iconfont-vip"></span>VIP会员</a>\n</li>\n<li>\n<a href="http://vip.biancheng.net/p/q2a/show.php" rel="nofollow" target="_blank"><span class="iconfont iconfont-q2a"></span>一对一答疑</a>\n</li>\n<li>\n<a href="http://fudao.biancheng.net/" rel="nofollow" target="_blank"><span class="iconfont iconfont-fudao"></span>辅导班</a>\n</li>\n<li>\n<a href="/view/9648.html" rel="nofollow" target="_blank"><span class="iconfont iconfont-weixin"></span>公众号</a>\n</li>\n</ul>\n</div>\n<div id="header" class="clearfix">\n<a id="logo" class="left" href="/">\n<img height="26" src="/templets/new/images/logo.png?v=1.6.91" alt="C语言中文网" />\n</a>\n<ul id="nav-main" class="hover-none left clearfix">\n<li class="wap-yes"><a href="/">首页</a></li>\n<li><a href="/c/">C语言教程</a></li>\n<li><a href="/cplus/">C++教程</a></li>\n<li><a href="/python/">Python教程</a></li>\n<li><a href="/java/">Java教程</a></li>\n<li><a href="/linux_tutorial/">Linux入门</a></li>\n<li><a href="/sitemap/" title="网站地图">更多&gt;&gt;</a></li>\n</ul>\n<span id="sidebar-toggle" class="toggle-btn" toggle-target="#sidebar">目录 <span class="iconfont"></span></span>\n<a href="http://vip.biancheng.net/?from=topbar" class="user-info iconfont iconfont-user hover-none" target="_blank" rel="nofollow" title="用户中心"></a>\n</div>\n<div id="main" class="clearfix">\n<div id="sidebar" class="toggle-target">\n<div id="contents">\n<dt><span class="iconfont iconfont-list-vertical" aria-hidden="true"></span><a href="/gcc/ ">GCC</a></dt>\n<dd>\n<span class="channel-num">1</span>\n<a href="/view/7930.html">GCC是什么？</a>\n</dd>\n<dd>\n<span class="channel-num">2</span>\n<a href="/view/7933.html">GCC编译器下载和安装教程（针对Linux发行版）</a>\n</dd>\n<dd>\n<span class="channel-num">3</span>\n<a href="/view/vip_8521.html">如何在Windows上使用GCC编译器？</a><span class="iconfont iconfont-vip2"></span>\n</dd>\n<dd>\n<span class="channel-num">4</span>\n<a href="/view/vip_8522.html">如何用Sublime Text运行C和C++程序？</a><span class="iconfont iconfont-vip2"></span>\n</dd>\n<dd>\n<span class="channel-num">5</span>\n<a href="/view/vip_8523.html">如何用VS Code运行C和C++程序？</a><span class="iconfont iconfont-vip2"></span>\n</dd>\n<dd>\n<span class="channel-num">6</span>\n<a href="/view/679.html">GCC的组成部分以及使用到的软件</a>\n</dd>\n<dd>\n<span class="channel-num">7</span>\n<a href="/view/7936.html">gcc和g++是什么，有什么区别？</a>\n</dd>\n<dd>\n<span class="channel-num">8</span>\n<a href="/view/7984.html">GCC自动识别的文件扩展名（一览表）</a>\n</dd>\n<dd>\n<span class="channel-num">9</span>\n<a href="/view/8053.html">GCC -std编译标准一览表</a>\n</dd>\n<dd>\n<span class="channel-num">10</span>\n<a href="/view/7959.html">GCC编译C/C++程序（一步完成）</a>\n</dd>\n<dd>\n<span class="channel-num">11</span>\n<a href="/view/7971.html">GCC -E选项：对源程序做预处理操作</a>\n</dd>\n<dd>\n<span class="channel-num">12</span>\n<a href="/view/7974.html">GCC -S选项：编译非汇编文件</a>\n</dd>\n<dd>\n<span class="channel-num">13</span>\n<a href="/view/7981.html">GCC -c选项：生成目标文件</a>\n</dd>\n<dd>\n<span class="channel-num">14</span>\n<a href="/view/700.html">GCC -o选项：指定输出文件</a>\n</dd>\n<dd>\n<span class="channel-num">15</span>\n<a href="/view/2382.html">GCC -l选项：手动添加链接库</a>\n</dd>\n<dd>\n<span class="channel-num">16</span>\n<a href="/view/vip_8524.html">GCC分步编译C++程序（汇总版）</a><span class="iconfont iconfont-vip2"></span>\n</dd>\n<dd>\n<span class="channel-num">17</span>\n<a href="/view/7992.html">如何使用gcc指令一次处理多个文件？</a>\n</dd>\n<dd>\n<span class="channel-num">18</span>\n<a href="/view/8010.html">GCC使用静态链接库和动态链接库</a>\n</dd>\n<dd>\n<span class="channel-num">19</span>\n<a href="/view/vip_8525.html">用GCC制作静态链接库</a><span class="iconfont iconfont-vip2"></span>\n</dd>\n<dd>\n<span class="channel-num">20</span>\n<a href="/view/vip_8526.html">用GCC制作动态链接库</a><span class="iconfont iconfont-vip2"></span>\n</dd>\n<dd>\n<span class="channel-num">21</span>\n<a href="/view/vip_8527.html">显示调用C/C++动态链接库</a><span class="iconfont iconfont-vip2"></span>\n</dd>\n<dd>\n<span class="channel-num">22</span>\n<a href="/view/vip_8528.html">GCC找不到库文件怎么办？</a><span class="iconfont iconfont-vip2"></span>\n</dd>\n</div>\n</div>\n<div id="article-wrap">\n<div id="article">\n<div class="arc-info">\n<span class="position"><span class="iconfont iconfont-home2"></span> <a href="/">首页</a> &gt; <a href="/gcc/">GCC</a></span>\n</div>\n<div id="ggxc-position-bottom" class="ggxc-box"></div>\n<h1>GCC是什么？</h1>\n<div class="pre-next-page clearfix">&nbsp;</div>\n<div id="ggxc-arctop-pc-1" class="ggxc-box"></div>\n<div id="arc-body">对于 GCC 的认知，很多读者还仅停留在&ldquo;GCC 是一个C语言编译器&rdquo;的层面，是很片面的。从本节开始，我将带领大家系统学习 GCC，本节先带领大家系统地了解一下 GCC。<br />\n<br />\n谈到 GCC，就不得不提 GNU 计划。GNU 全称 GNU&#39;s Not UNIX，又被称为&ldquo;革奴计划&rdquo;，由理查德&middot;斯托曼于 1983 年发起。GNU 计划的最终目标是打造出一套完全自由（即自由使用、自由更改、自由发布）、开源的操作系统，并初步将其命名为 GNU 操作系统（其 logo 如图 1 所示）。<br />\n<br />\n<div style="text-align: center;">\n<img alt="GNU计划的logo：非洲牛羚" src="/uploads/allimg/200618/2-20061QJ350545.gif" /><br />\n图 1 GNU 操作系统的 logo：非洲牛羚</div>\n<br />\nGNU 计划的实施可谓一波三折，最重要的一点是，虽然该计划为 GNU 操作系统量身定做了名为 Thr Hurd 的系统内核，但由于其性能比不上同时期诞生的 Linux 内核，最终 GNU 计划放弃 The Hurd 而选用 Linux 作为 GNU 操作系统的内核。在 Linux 内核的基础上，GNU 计划开发了很多系统部件，GCC 就是其中之一（除此之外，还有 Emacs 等非常实用的软件）。\n<blockquote>\n<p>\n由此看来，GNU 计划最终实现了&ldquo;打造一套自由、开源的操作系统&rdquo;的初衷，但该操作系统并非完全产自 GNU 计划，因此其被称为 GNU/Linux 操作系统（人们更习惯称为 Linux 操作系统）。注意，开源、自由并不等于免费，有关它们的区别，读者可阅读《<a href="/view/vip_5041.html" target="_blank">开源就等于免费吗？</a>》一文。</p>\n</blockquote>\n早期 GCC 的全拼为 GNU C Compiler，即 GUN 计划诞生的 C 语言编译器，显然最初 GCC 的定位确实只用于编译 C 语言。但经过这些年不断的迭代，GCC 的功能得到了很大的扩展，它不仅可以用来编译 C 语言程序，还可以处理 C++、Go、Objective -C 等多种编译语言编写的程序。与此同时，由于之前的 GNU C Compiler 已经无法完美诠释 GCC 的含义，所以其英文全称被重新定义为&nbsp; GNU Compiler Collection，即<span style="color:#008000;"> GNU 编译器套件</span>。<br />\n<blockquote>\n<p>\n所谓编译器，可以简单地将其理解为&ldquo;翻译器&rdquo;。要知道，计算机只认识二进制指令（仅有 0 和 1 组成的指令），我们日常编写的 C 语言代码、C++ 代码、Go 代码等，计算机根本无法识别，只有将程序中的每条语句翻译成对应的二进制指令，计算机才能执行。</p>\n</blockquote>\nGCC 编译器从而停止过改进。截止到今日（2020 年 5 月），GCC 已经从最初的 1.0 版本发展到了 10.1 版本，期间历经了上百个版本的迭代。作为一款最受欢迎的编译器，GCC 被移植到数以千计的硬件/软件平台上，几乎所有的 Linux 发行版也都默认安装有 GCC 编译器。<br />\n<br />\n<table>\n<caption>\n表1：GCC 支持的硬件平台（部分）</caption>\n<tbody>\n<tr>\n<th>\n硬件</th>\n<th>\n操作系统</th>\n</tr>\n<tr>\n<td>\nAlpha</td>\n<td>\nRed Hat Linux 7.1</td>\n</tr>\n<tr>\n<td>\nHPPA</td>\n<td>\nHPUX 11.0</td>\n</tr>\n<tr>\n<td>\nIntel x86</td>\n<td>\nDebian Linux 2.2、Red Hat Linux 6.2 和 FreeBSD 4.5</td>\n</tr>\n<tr>\n<td>\nMIPS</td>\n<td>\nIRIX 6.5</td>\n</tr>\n<tr>\n<td>\nPowerPC</td>\n<td>\nAIX 4.3.3</td>\n</tr>\n<tr>\n<td>\nSparc</td>\n<td>\nSolaris 2.7</td>\n</tr>\n</tbody>\n</table>\n<br />\n值得一提的是，原汁原味的 GCC 编译器没有我们熟悉的界面窗口，要想使用它，必须编写对应的 gcc 命令。所谓原汁原味，指的是纯 GCC 编译器和集成了 GCC 编译器的开发软件（IDE），和前者相比，后者在集成 GCC 编译器功能的同时，还向用户提供了友好的界面窗口，使得用户即便记不住 gcc 命令，也能从事开发工作，这极大地降低了用户的学习成本。\n<blockquote>\n<p>\n我们知道，操作系统大致分为 2 大阵营，分别是 Windows 阵营和类 Unix 阵营（包括 Unix、Linux、Mac OS、安卓等）。通常情况下，Windows 系统下用户更习惯使用现有的 IDE 来编译程序；而类 Unix 系统下，用户更喜欢直接编写相应的 gcc 命令来编译程序。</p>\n</blockquote>\n<br />\n在了解什么是 GCC 编译器的基础上，这里以在 CentOS 操作系统（Linux 发行版之一）上使用 gcc 命令运行 C 语言程序为例，让读者更直观的感受一下 GCC 编译器的功能和使用方法。<br />\n<br />\n如下是我们在 vim 编辑器中编写的一段完整的 C 语言程序，其功能是输出一个 &quot;Hello, World!&quot;：\n<div style="text-align: center;">\n<br />\n<img alt="Linux系统下编写C语言程序" src="/uploads/allimg/200619/2-200619125022354.gif" /><br />\n图 1 Linux 系统下编写 C 语言程序</div>\n<br />\n对于此程序，我们可以使用如下的 gcc 命令：\n<p class="info-box">\ngcc demo.c -o demo.exe</p>\n<blockquote>\n<p>\n有关 gcc 命令各部分的含义，后续章节会做详细讲解，这里不必深究。</p>\n</blockquote>\n<br />\n下图演示了如何使用 gcc 命令将 C 语言代码编译成一个可执行文件：\n<div style="text-align: center;">\n<br />\n<img alt="gcc命令编译C语言程序" src="/uploads/allimg/200619/2-20061912593I10.gif" /><br />\n图 2 gcc 命令编译 C 语言程序</div>\n<br />\n如图 2 所示，通过编写对应的 gcc 命令并执行，就可以轻松将我们编写的程序编译成一个二进制可执行文件。<br />\n<br />\n那么，gcc 命令该如何编写呢？别急，下面我将分章节给大家做详细地讲解。</div>\n<div id="ggxc-weixin-arcbottom">\n<p>关注公众号「<span class="col-green">站长严长生</span>」，在手机上阅读所有教程，随时随地都能学习。本公众号由<a class="col-link" href="/view/8092.html" target="_blank" rel="nofollow">C语言中文网站长</a>亲自运营，长期更新，坚持原创。</p>\n<p style="margin-top:12px; text-align:center;">\n<img src="/templets/new/images/material/qrcode_mp.png?v=1.6.91" alt="公众号二维码" width="160" /><br />\n<span class="col-green">微信扫码关注公众号</span>\n</p>\n</div>\n<div class="pre-next-page clearfix">&nbsp;</div>\n<div id="nice-arcs" class="box-bottom">\n<h4>优秀文章</h4>\n<ul class="clearfix">\n<li><a href="/view/859.html" title="Linux gpasswd命令用法详解：把用户添加进组或从组中删除">Linux gpasswd命令用法详解：把用户添加进组或从组中删除</a></li>\n<li><a href="/view/1085.html" title="Java泛型简明教程">Java泛型简明教程</a></li>\n<li><a href="/view/1345.html" title="C++ getline函数用法详解">C++ getline函数用法详解</a></li>\n<li><a href="/view/2421.html" title="MySQL数据类型简介">MySQL数据类型简介</a></li>\n<li><a href="/view/vip_6063.html" title="Python exec()和eval()的使用注意事项">Python exec()和eval()的使用注意事项</a></li>\n<li><a href="/view/7505.html" title="Django项目创建第一个应用">Django项目创建第一个应用</a></li>\n<li><a href="/view/vip_8251.html" title="如何判断两个单链表相交？">如何判断两个单链表相交？</a></li>\n<li><a href="/redis2/mget.html" title="Redis MGET命令">Redis MGET命令</a></li>\n<li><a href="/view/9367.html" title="JS History对象：获取浏览历史">JS History对象：获取浏览历史</a></li>\n<li><a href="/view/9769.html" title="什么是嵌入式系统">什么是嵌入式系统</a></li>\n</ul>\n</div>\n</div>\n</div>\n</div>\n<script type="text/javascript">\r\n// 当前文章ID\r\nwindow.arcIdRaw = \'a_\' + 7930;\r\nwindow.arcId = "19f5xgOjq3AqqNEdGLZ8iwcck0WLrViYXqDkguvzdG81YTefv84lWPRODb0";\r\nwindow.typeidChain = "73";\r\n</script>\n<div id="footer" class="clearfix">\n<div class="info left">\n<p>精美而实用的网站，分享优质编程教程，帮助有志青年。千锤百炼，只为大作；精益求精，处处斟酌；这种教程，看一眼就倾心。</p>\n<p>\n<a href="/view/8066.html" target="_blank" rel="nofollow">关于网站</a> <span>|</span>\n<a href="/view/8092.html" target="_blank" rel="nofollow">关于站长</a> <span>|</span>\n<a href="/view/8097.html" target="_blank" rel="nofollow">如何完成一部教程</a> <span>|</span>\n<a href="/view/9648.html" target="_blank" rel="nofollow">公众号</a> <span>|</span>\n<a href="/view/8093.html" target="_blank" rel="nofollow">联系我们</a> <span>|</span>\n<a href="/sitemap/" target="_blank" rel="nofollow">网站地图</a>\n</p>\n<p>Copyright ©2012-2022 biancheng.net, <a href="https://beian.miit.gov.cn" target="_blank" rel="nofollow" style="color:#666;">冀ICP备2022013920号</a>, <img height="13" src="/templets/new/images/gongan.png?v=1.6.91" alt="公安备案图标" /><a href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=13110202001352" target="_blank" rel="nofollow" style="color:#666;">冀公网安备13110202001352号</a>\n</p>\n</div>\n<img id="logo_bottom" class="right" src="/templets/new/images/logo_bottom.gif?v=1.6.91" alt="底部Logo" />\n<span id="return-top"><b>↑</b></span>\n</div>\n<div id="addweixin-widget">\n<p>\n<script type="text/javascript">\n\t\t\tvar i = (new Date()).getMinutes() % 2 + 1;\n\t\t\tdocument.write(\'<img src="/templets/new/images/material/qrcode_wx_\' + i +\'.png?v=1.6.91" alt="微信交流群" width="120" /><br />\');\n\t\t</script>\n<span>加入微信交流群，一起学习不枯燥。内含一款搜索神器，免费下载全网书籍和视频。</span>\n</p>\n<span id="close-addweixin-widget" class="iconfont iconfont-close"></span>\n</div>\n<script type="text/javascript">\nwindow.siteId = 4;\nwindow.cmsTemplets = "/templets/new";\nwindow.cmsTempletsVer = "1.6.91";\nwindow.prePageURL = "/gcc/";\nwindow.nextPageURL = "/view/7933.html";\n</script>\n<script src="/templets/new/script/jquery1.12.4.min.js"></script>\n<script src="/templets/new/script/common.js?v=1.6.91"></script>\n<span style="display: none;"><script type="text/javascript" src="https://js.users.51.la/21368967.js"></script></span>\n</body>\n</html>'}
    # page_text = sss['body']
    # tree = etree.HTML(page_text)
    # res = tree.xpath('//div[@id="arc-body"]/text()')
    #
    # print(res)

    # with open(out_file, mode='w+', encoding='utf-8') as f:
    #     f.write(html2text.html2text(res))
    # for i in range(22):
    #     print(i)
    i = 1
    num = str(i).rjust(2, '0')
    print(num)
